<?php
namespace Api\Controller;
use Api\Model\TagModel;
use Api\Model\FileModel;
use Api\Model\DownlineVersionModel;

/**
 * 系统相关控制器
 * 
 * @author xiaoyutab<xiaoyutab@qq.com>
 * @version v1.0.0
 * @copyright (c) 2017, xiaoyutab
 * @adtime 2018-06-16 19:43:10
 */
class SystemController extends EmptyController{
    /**
     * 系统相关控制器
     * 
     * @api {post} /System 01获取首页信息
     * @apiDescription 获取首页信息
     *      其中图片路径前缀为:http://hanhouxiong.hlhk.xiaoyutab.cn/Upload/
     *      也可以写作:[接口路径]../Upload/
     * @apiGroup 00System
     * @apiVersion 1.0.1
     * @apiSuccessExample Success-Response:
     *  HTTP/1.1 200 OK
     *  {
     *      "code":0,// 成功代码
     *      // 备注:此处如果不是0则均标示请求错误
     *      "msg":"成功",
     *      "time":"2018-06-16 21:24:47",
     *      "data":{
     *          "count":"2",// 查询到的条数
     *          "list":[
     *              {
     *                  "id":"4",// 首页标签编号
     *                  "title":"首页2",// 标题
     *                  "desc":"首页页首页首页",// 简介
     *                  "file":"image/2018-06-10/2018-06-10/5b1c8c390212f.jpg",// 封面图
     *                  "icon":"image/2018-06-10/2018-06-10/5b1c8c390212f.jpg",// ICON图
     *                  "icon_on":"image/2018-06-10/2018-06-10/5b1c8c390212f.jpg"// ICON图选中状态
     *              },
     *              {
     *                  "id":"5",
     *                  "title":"首页1",
     *                  "desc":"首页首页首页首页首页首页首页首页首页首页首页首页首页首页",
     *                  "file":"image/2018-06-10/2018-06-10/5b1c8c390212f.jpg",
     *                  "icon":"image/2018-06-10/2018-06-10/5b1c8c390051c.jpg",
     *                  "icon_on":"image/2018-06-10/2018-06-10/5b1c8c390051c.jpg"
     *              }
     *          ]
     *      }
     *  }
     * @apiSuccessExample Success-No-File:
     *  HTTP/1.1 200 OK
     *  {
     *      "code":0,// 成功代码
     *      // 备注:此处如果不是0则均标示请求错误
     *      "msg":"成功",
     *      "time":"2018-06-16 21:24:47",
     *      "data":{
     *          "count":"1",// 查询到的条数
     *          "list":[
     *              {
     *                  "id":"4",// 首页标签编号
     *                  "title":"首页2",// 标题
     *                  "desc":"首页页首页首页",// 简介
     *                  "file":"",// 封面图
     *                  "icon":"image/2018-06-10/2018-06-10/5b1c8c390212f.jpg",// 缩略图
     *                  "icon_on":"image/2018-06-10/2018-06-10/5b1c8c390051c.jpg"
     *              }
     *          ]
     *      }
     *  }
     * @apiSuccessExample Success-No-Icon:
     *  HTTP/1.1 200 OK
     *  {
     *      "code":0,// 成功代码
     *      // 备注:此处如果不是0则均标示请求错误
     *      "msg":"成功",
     *      "time":"2018-06-16 21:24:47",
     *      "data":{
     *          "count":"1",// 查询到的条数
     *          "list":[
     *              {
     *                  "id":"4",// 首页标签编号
     *                  "title":"首页2",// 标题
     *                  "desc":"首页页首页首页",// 简介
     *                  "file":"image/2018-06-10/2018-06-10/5b1c8c390212f.jpg",// 封面图
     *                  "icon":"",// 缩略图
     *                  "icon_on":""
     *              }
     *          ]
     *      }
     *  }
     * @apiSuccessExample Success-Empty:
     *  HTTP/1.1 200 OK
     *  {
     *      "code":0,// 成功代码
     *      // 备注:此处如果不是0则均标示请求错误
     *      "msg":"成功",
     *      "time":"2018-06-16 21:24:47",
     *      "data":{
     *          "count":"0",// 查询到的条数
     *          "list":[
     *          ]
     *      }
     *  }
     * @apiErrorExample Error-Response:
     *     HTTP/1.1 200 OK
     *      {
     *          "code":2,
     *          "msg":"参数错误",
     *          "time":"2018-06-15 15:05:56",
     *          "data":{
     *          }
     *      }
     */
    public function indexAction(){
        $return_data = array();
        $tag = new TagModel();
        $file = new FileModel();
        $list = $tag->where(array(
            'type' => get_config_id('TagType','首页'),
        ))->getList(0,999);
        $return_data['count'] = count($list);
        foreach($list as $k => $v){
            $return_data['list'][] = array(
                'id' => $v['id'],// 首页标签编号
                'title' => $v['name'],
                'desc' => $v['desc'],
                'file' => $file->get_img_type('tag', $v['id'], NULL, 'file_path', TRUE),
                'icon' => $file->get_img_type('tag', $v['id'], 'icon', 'file_path', TRUE),
                'icon_on' => $file->get_img_type('tag', $v['id'], 'icon_on', 'file_path', TRUE),
            );
        }
        return $this->returnCode($return_data);
    }
    
    /**
     * 点击首页后进入的产品案例列表，含案例详情
     * 
     * @api {post} /System/get_case_list 02首页案例列表
     * @apiDescription 点击首页后进入的产品案例列表，含案例详情
     * 
     *      其中图片路径前缀为:http://hanhouxiong.hlhk.xiaoyutab.cn/Upload/
     *      也可以写作:[接口路径]../Upload/
     * @apiGroup 00System
     * @apiParam {integer} id 首页的ID信息值
     * @apiVersion 1.0.1
     * @apiSuccessExample Success-Response:
     *  HTTP/1.1 200 OK
     *  {
     *      "code":0,// 成功代码
     *      // 备注:此处如果不是0则均标示请求错误
     *      "msg":"成功",
     *      "time":"2018-06-16 21:24:47",
     *      "data":{
     *          "count":"1",// 查询到的条数
     *          "list":[
     *              {
     *                  "id":"4",// 首页标签编号
     *                  "name":"案例2",// 标题
     *                  "desc":"案例页首页首页",// 简介
     *                  "file":[
     *                      "image/2018-06-10/2018-06-10/5b1c8c390212f.jpg",// 案例图1
     *                      "image/2018-06-10/2018-06-10/5b1c8c390212f.jpg"// 案例图2
     *                  ],
     *                  "project":[// 产品列表
     *                      {
     *                          "name":"测试产品aaa",// 产品名称
     *                          "price":"18.22",// 产品价格
     *                          "wl_no":"wl 12002545",// 物料编号
     *                          "desc":"",// 产品简介
     *                          "file":[
     *                              "image/2018-06-10/2018-06-10/5b1c8c390212f.jpg",// 产品图1
     *                              "image/2018-06-10/2018-06-10/5b1c8c390212f.jpg"// 产品图2
     *                          ]
     *                      }
     *                  ]
     *              }
     *          ]
     *      }
     *  }
     * @apiSuccessExample Success-No-Project
     *  HTTP/1.1 200 OK
     *  {
     *      "code":0,// 成功代码
     *      // 备注:此处如果不是0则均标示请求错误
     *      "msg":"成功",
     *      "time":"2018-06-16 21:24:47",
     *      "data":{
     *          "count":"1",// 查询到的条数
     *          "list":[
     *              {
     *                  "id":"4",// 首页标签编号
     *                  "name":"案例2",// 标题
     *                  "desc":"案例页首页首页",// 简介
     *                  "file":[
     *                      "image/2018-06-10/2018-06-10/5b1c8c390212f.jpg",// 案例图1
     *                      "image/2018-06-10/2018-06-10/5b1c8c390212f.jpg"// 案例图2
     *                  ],
     *                  "project":[
     *                  ]
     *              }
     *          ]
     *      }
     *  }
     * @apiSuccessExample Success-No-List
     *  HTTP/1.1 200 OK
     *  {
     *      "code":0,// 成功代码
     *      // 备注:此处如果不是0则均标示请求错误
     *      "msg":"成功",
     *      "time":"2018-06-16 21:24:47",
     *      "data":{
     *          "count":"0",// 查询到的条数
     *          "list":[
     *          ]
     *      }
     *  }
     * @apiErrorExample Error-Response:
     *     HTTP/1.1 200 OK
     *      {
     *          "code":2,
     *          "msg":"参数错误",
     *          "time":"2018-06-15 15:05:56",
     *          "data":{
     *          }
     *      }
     */
    public function get_case_listAction(){
        $return_data = array();
        // 获取首页栏目编号
        $id = I('post.id');
        // 根据首页栏目编号获取数据
        $tag = new TagModel();
        $lists = $tag->get_anli_list($id);
        return $this->returnCode(array(
            'count' => count($lists),
            'list' => $lists,
        ));
    }
    
    
    /**
     * 离线更新接口
     * 
     * @api {post} /System/get_new_version 03离线更新接口
     * @apiDescription 离线更新接口。
     *                  此接口将离线包放置在接口的url列表中。
     *                  列表包结构：
     * 
     * *.json：接口返回的json字符串<br/>
     * 文件夹：接口中涉及到的图片路径及地址详情
     * @apiGroup 00System
     * @apiVersion 1.0.3
     * @apiSuccessExample Success-Response:
     *  HTTP/1.1 200 OK
     *  {
     *      "code": 0,
     *      "msg": "成功",
     *      "time": "2018-06-29 16:06:41",
     *      "data": {
     *          "version": "v 1.1.1",// 当前版本信息（最新版本号）
     *          "desc": "<p>添加一个小版本信息</p>\r\n",// 最新版本号对应描述信息
     *          "url": "/online/1.1.0.zip",// 完整包路径
     *          "create_time": "2018-07-05 11:44:20",// 版本创建时间
     *          "size": "1.25MB",// 离线包大小
     *      }
     *  }
     * @apiSuccessExample 压缩包内部目录结构简介
     *  HTTP/1.1 200 OK
     *  {
     *      "目录":"接口涉及到的文件信息",
     *      "file_existence.json":"本接口存在的文件列表，此文件是针对后台生成增量包使用的",
     *      "System.get_case_list.json":"接口System/get_case_list的返回值",
     *      "System.json":"接口System的返回值",
     *      "project_link.json":"产品和案例等之间的关系",
     *      "project_link_type":[
     *          {
     *              "goodsid":"10",// 产品编号
     *              "parentid":"10"// 案例/分类等的编号
     *          }
     *      ],
     *      "tags_link.json":"案例与案例之间的关系",
     *      "tags_link_type":[
     *          {
     *              "goodsid":"10",// 案例/分类编号
     *              "parentid":"15"// 父案例/分类等的编号
     *          }
     *      ],
     *      "Type.brand.json":"接口Type/brand的返回值",
     *      "Type.case.json":"接口Type/case的返回值",
     *      "Type.json":"接口Type的返回值",
     *      "project_list.json":"产品列表及详情",
     *      "project_list_type"[
     *          {
     *              "id":"4",// 产品编号
     *              "name":"aaaa",// 产品名称
     *              "price":"12.00",// 产品价格
     *              "wl_no":"sdgbxc",// 物料编号
     *              "content":"<p>adfdsgvgxcv修复你的观念</p>",// 产品简介
     *              "ad_time":"2018-06-11 10:29:18",// 产品添加时间
     *              "file_path":"image/2018-06-11/2018-06-11/5b1dde927e4f2.jpg,image/2018-06-11/2018-06-11/5b1dde9278bce.jpg"// 产品图片，多张使用,拼接
     *          }
     *      ]
     *  }
     */
    public function get_new_versionAction(){
        $_version = new DownlineVersionModel();
        $in_line = $_version->order('`id` DESC')->find();
        $filename = C('Upload.IMAGE_SAVE_PATH',NULL,'./Public/Upload/').$in_line['file_url'];
        $return_data = [
            'version' => 'v '.$in_line['big_version'].'.'.$in_line['in_version'].'.'.$in_line['small_version'],
            'desc' => htmlspecialchars_decode($in_line['desc']),
            'url' => $in_line['file_url'],
            'create_time' => date('Y-m-d H:i:s',$in_line['ad_time']),
            'size' => file_exists($filename) ? $this->HumanReadableFilesize(filesize($filename)) : $this->HumanReadableFilesize(0)
        ];
//        $list = $_version->where([
//            'big_version' => $in_line['big_version'],
//            'in_version' => $in_line['in_version'],
//            'small_version' => ['egt',0],
//        ])->order('`id` ASC')->select();
//        foreach($list as $v){
//            $return_data['url'][] = $v['file_url'];
//        }
        return $this->returnCode($return_data);
    }
    /**
     * Returns a human readable filesize
     */
    private function HumanReadableFilesize($size) {
       $mod = 1024; 
       $units = explode(' ','B KB MB GB TB PB');
       for ($i = 0; $size > $mod; $i++) {
           $size /= $mod;
       }
       return round($size, 2) . ' ' . $units[$i];
   }
}
